<?php

/*
* Modelo: "session.php"
*
* Realizado por:
* 	Carlos Calvo
*	Elisa Conesa
*/

@include_once('enlaceBD.php');
@include_once('auditoria.php');
@include_once('funciones.php');

class Session {
	
	/* Nombre de las Variables del Modelo (INFORMATIVO)
    // EMPLEADO
	+------------------------+-------------+------+-----+---------+-------+
	| Field                  | Type        | Null | Key | Default | Extra |
	+------------------------+-------------+------+-----+---------+-------+
	| carnet                 | varchar(16) | NO   | PRI | NULL    |       |
	| id_tipo_identificacion | varchar(2)  | NO   |     | NULL    |       |
	| nro_identificacion     | char(15)    | NO   |     | NULL    |       |
	| carnet_jefe            | varchar(16) | YES  |     | NULL    |       |
	| id_grupo               | char(2)     | YES  |     | NULL    |       |
	| id_departamento        | char(2)     | YES  |     | NULL    |       |
	| id_oficina             | char(3)     | NO   |     | NULL    |       |
	| id_entidad             | char(3)     | NO   |     | NULL    |       |
	| login                  | varchar(16) | NO   |     | NULL    |       |
	| estatus                | char(1)     | NO   |     | NULL    |       |
	| email                  | varchar(48) | NO   |     | NULL    |       |
	| fecha_creacion         | datetime    | NO   |     | NULL    |       |
	| nombre                 | varchar(32) | NO   |     | NULL    |       |
	| apellido               | varchar(32) | NO   |     | NULL    |       |
	| telefono               | varchar(12) | NO   |     | NULL    |       |
	| password               | varchar(50) | NO   |     | NULL    |       |
	| fecha_modificacion     | datetime    | YES  |     | NULL    |       |
	+------------------------+-------------+------+-----+---------+-------+
	
	// EMPLEADO_APLICACION
	+---------------+-------------+------+-----+---------+-------+
	| Field         | Type        | Null | Key | Default | Extra |
	+---------------+-------------+------+-----+---------+-------+
	| carnet        | varchar(16) | NO   | PRI | NULL    |       |
	| id_aplicacion | int(11)     | NO   | PRI | NULL    |       |
	| activo        | int(1)      | NO   |     | NULL    |       |
	| permisologia  | text        | NO   |     | NULL    |       |
	+---------------+-------------+------+-----+---------+-------+
	
	// USUARIO
	+-----------------+-------------+------+-----+---------+-------+
	| Field           | Type        | Null | Key | Default | Extra |
	+-----------------+-------------+------+-----+---------+-------+
	| carnet          | varchar(16) | NO   | PRI | NULL    |       |
	| login           | varchar(16) | NO   | PRI | NULL    |       |
	| id_rol          | int(11)     | NO   |     | NULL    |       |
	| id_permisologia | text        | NO   |     | NULL    |       |
	+-----------------+-------------+------+-----+---------+-------+
	*/
	
    // Variable para los resultados de las Consultas
    private $respuesta;
	
	// Tablas del Modelo
	private $templeado 				= "empleado";
	private $templeado_aplicacion 	= "empleado_aplicacion";
	private $trvp_usuario 			= "rvp_usuario";
	
	
	// ==================================================================================================			
	//	FUNCION - INICIAR SESION DE USUARIO
	// ==================================================================================================
	
	public function iniciar_sesion( $login, $password ) {
		$conexion 	= new EnlaceBD;
        $var 		= $conexion->conectar( $_SESSION['db_portal'] );
		
		$sql = "select e.carnet as carnet, 
					e.nro_identificacion as nro_identificacion, 
					e.nombre as nombre, 
					e.apellido as apellido, 
					e.password as password, 
					e.id_oficina as id_oficina, 
					e.id_entidad as id_entidad, 
					e.estatus as estatus, 
					a.permisologia as permisologia 
				from ".$_SESSION['db_portal'].$_SESSION['schema_db'].".$this->templeado as e, 
					".$_SESSION['db_portal'].$_SESSION['schema_db'].".$this->templeado_aplicacion as a 
				where e.login = '$login' and 
					e.password = '$password' and 
					e.estatus = 'A' and 
					e.carnet = a.carnet and 
					a.id_aplicacion = ".$_SESSION['id_aplicacion']." and 
					a.activo = 1";
		
		$this->respuesta = $conexion->consultar($sql) 
			or die("No se pudo consultar el Usuario $login para Iniciar Sesi&oacute;n.");
		
		$usuario_existe = "N";
		
		if ( $this->respuesta->nro_filas() > 0 ) {
			$usuario_existe = "S";
		} else {
			$usuario_existe = "N";
		}
		
		if ( $usuario_existe == "S" ) {
			$temparray = $this->respuesta->buscar_fila();
				$carnet				= strtoupper($temparray['carnet']);
				$ced_enc			= $temparray['nro_identificacion'];
				$nombre_enc			= strtoupper($temparray['nombre']);
				$apellido_enc		= strtoupper($temparray['apellido']);
				$id_oficina			= $temparray['id_oficina'];
				$id_entidad			= strtoupper($temparray['id_entidad']);
				$cod_vigilancia_enc	= strtoupper($id_entidad."-".$id_oficina);
				$permisologia_enc	= $temparray['permisologia'];
				$status_enc			= strtoupper($temparray['estatus']);
			
			$_SESSION['CARNET_ENC'] 		= $carnet;
			$_SESSION['CEDULA_ENC'] 		= $ced_enc;
			$_SESSION['NOMBRE_ENC'] 		= $nombre_enc;
			$_SESSION['APELLIDO_ENC'] 		= $apellido_enc;
			$_SESSION['Estado_log'] 		= "logeado";
			$_SESSION['LOGIN']				= $login;
			$_SESSION['PASSWORD']			= $password;
			$_SESSION['COD_VIGILANCIA']		= $cod_vigilancia_enc;
			$_SESSION['PERMISOLOGIA_ENC'] 	= $permisologia_enc;
			$_SESSION['STATUS_ENC'] 		= $status_enc;
			$_SESSION['SessionId'] 			= $_SERVER['REMOTE_ADDR'].session_id();	// Asigna el id de la sesion que se acaba de crear
			$_SESSION['ip']					= $_SERVER['REMOTE_HOST'];				// Direccion ip del usuario
			$_SESSION['browser_ver'] 		= FUNC_brouserUsr();
			
			$mensaje = 'CONEXION SATISFACTORIA';
				
			if ( $_SESSION['manejador_db'] == "sybase" ) {
				$sql = "exec ".$_SESSION['db_portal'].$_SESSION['schema_db'].".SP_CONEXION_RVP '0', '$carnet', '".strtoupper($_SESSION['LOGIN'])."', '".$_SERVER['REMOTE_ADDR']."', '".$_SESSION['browser_ver']."'";
				
				$this->respuesta = $conexion->consultar($sql) 
					or die("No se pudo realizar la Conexion del Usuario $login para Iniciar Sesi&oacute;n.");
				
				$temparray = $this->respuesta->buscar_fila();
					$mensaje = $temparray['MENSAJE'];
			}
			
			if ( $mensaje == 'CONEXION SATISFACTORIA' ) {
				$sql = "select u.login as login, 
							u.id_permisologia as id_permisologia 
						from ".$_SESSION['db_rvp'].$_SESSION['schema_db'].".$this->trvp_usuario as u 
						where u.login = '$login'";
				
				$this->respuesta = $conexion->consultar($sql) 
					or die("No se pudo consultar la Permisologia del Usuario $login.");
				
				$temparray = $this->respuesta->buscar_fila();
				
				$sesion[0] 	= $login;
				$sesion[1] 	= $nombre_enc;
				$sesion[2] 	= $apellido_enc;
				$sesion[3] 	= $status_enc;
				$sesion[4] 	= $temparray['id_permisologia'];
				$sesion[5] 	= $id_oficina;
				$sesion[6] 	= $id_entidad;
				$sesion[9] 	= $_SESSION["ip"];
			}
			$sesion[10] = $mensaje;
			
		} else {	// USUARIO NO REGISTRADO
			$sesion[0] 	= "";
			$sesion[1] 	= "";
			$sesion[2] 	= "";
			$sesion[3] 	= "";
			$sesion[4] 	= "";
			$sesion[5] 	= "";
			$sesion[6] 	= "";
			$sesion[9] 	= "";
			$sesion[10] = "El Usuario no se encuentra Registrado en el Sistema.";
		}
		
		$conexion->desconectar();
		return $sesion;
	}
	
	
	// =================================================================================================================
	//	FUNCION - CERRAR SESION DE USUARIO
	// =================================================================================================================
	
	public function cerrar_sesion() {
		
		$mensaje_db = "SI";
			
		if( $_SESSION['manejador_db'] == "sybase" ) {
			$conexion 	= new EnlaceBD;
        	$var 		= $conexion->conectar( $_SESSION['db_portal'] );
		
			$sql = "exec ".$_SESSION['db_portal'].$_SESSION['schema_db'].".SP_CONEXION_RVP '1', '".$_SESSION['CARNET_ENC']."', '', '', ''";
			
			$this->respuesta = $conexion->consultar($sql) 
				or die("No se pudo Desconectar el Usuario ".$_SESSION['CARNET_ENC'].".");
			
			$temparray = $this->respuesta->buscar_fila();
				$mensaje_db = $temparray['MENSAJE'];
			
			$conexion->desconectar();
		}
		
		if ( $mensaje_db == "SI" ) {
			$auditoria 	= new Auditoria;
			$auditoria->insertar( "999" );
			
			// Borrando los valores de la sesion
			@session_start();
			@session_unset();
			@session_destroy();
			return true;
		} else {
			return false;
		}
	}
}
?>